package br.com.fatecmc.persephone.gestaoambiental.core.dao.impl;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.logging.Level;
import java.util.logging.Logger;

import br.com.fatecmc.core.dao.AbstractDAO;
import br.com.fatecmc.fatec.domain.Entidade;
import br.com.fatecmc.persephone.gestaoAmbiental.GestaoAmbiental;

public class DAOGestaoAmbiental extends AbstractDAO{

	@Override
	public void salvar(Entidade obj) throws IllegalArgumentException {
		try {
			GestaoAmbiental gestao = (GestaoAmbiental) obj;
			conexao.getConexao().createStatement(); 
	        String sql =  "INSERT INTO tb_propriedades_gestao_ambiental ( id_propriedade, conhece_obrig_ambientais_flg, participa_colegiado_amb_flg,possui_demarcacao_apps_flg," +
	        		"possui_doc_conformidade_amb_flg, porc_utiliz_area_util,tipo_erosao)" +
	        			   "VALUES(?,?,?,?,?,?,?)";
	        PreparedStatement pstm = conexao.getConexao().prepareStatement(sql);
	        pstm.setInt(1, gestao.getId());
	        pstm.setBoolean(2, gestao.getConheceObrigAmbientais());
	        pstm.setBoolean(3, gestao.getParticipaColegiadoAmb());
	        pstm.setBoolean(4, gestao.getPossuiDemarcacaoAPPs());
	        pstm.setBoolean(5, gestao.getPossuiDocConformidadeAmb());
	        pstm.setDouble(6, gestao.getPorcUtilizAreaUtil());
	        pstm.setString(7, gestao.getTipoErosao());
;
	        pstm.executeUpdate();
	        pstm.close();
	        conexao.getConexao().close();
		} catch (Exception e) {
			Logger.getLogger(DAOGestaoAmbiental.class.getName()).log(Level.SEVERE, null, e);
		}
		
	}

	@Override
	public Entidade alterar(Entidade obj) {
		try {
			GestaoAmbiental gestao = (GestaoAmbiental) obj;
			conexao.getConexao().createStatement(); 
	        String sql =  "update tb_propriedades_gestao_ambiental set  conhece_obrig_ambientais_flg = ?, participa_colegiado_amb_flg= ?,possui_demarcacao_apps_flg= ?," +
	        		"possui_doc_conformidade_amb_flg= ?, porc_utiliz_area_util = ?,tipo_erosao= ? " +
	        		 " where id_propriedade = ? ";
	        PreparedStatement pstm = conexao.getConexao().prepareStatement(sql);
	        pstm.setInt(7, gestao.getId());
	        pstm.setBoolean(1, gestao.getConheceObrigAmbientais());
	        pstm.setBoolean(2, gestao.getParticipaColegiadoAmb());
	        pstm.setBoolean(3, gestao.getPossuiDemarcacaoAPPs());
	        pstm.setBoolean(4, gestao.getPossuiDocConformidadeAmb());
	        pstm.setDouble(5, gestao.getPorcUtilizAreaUtil());
	        pstm.setString(6, gestao.getTipoErosao());

	        pstm.executeUpdate();
	        pstm.close();
	        conexao.getConexao().close();
	        return gestao;
		} catch (Exception e) {
			Logger.getLogger(DAOGestaoAmbiental.class.getName()).log(Level.SEVERE, null, e);
			return null;
		}
	}

	@Override
	public boolean excluir(Entidade obj) {
		 try {
			 	GestaoAmbiental gestao = (GestaoAmbiental) obj;
	            conexao.getConexao().createStatement(); 
	            String sql =  "delete from tb_propriedades_gestao_ambiental where id_propriedade = ? ";
	            PreparedStatement pstm = conexao.getConexao().prepareStatement(sql);
	            pstm.setInt(1 , gestao.getId());
	            pstm.executeUpdate();
	            conexao.getConexao().close();
	            pstm.close();
	            return true;
	        } catch (SQLException ex) {
	            Logger.getLogger(DAOGestaoAmbiental.class.getName()).log(Level.SEVERE, null, ex);
	            return false;
	        }
	}

	@Override
	public Collection consultar(Entidade obj) {
		try {
			GestaoAmbiental gestao = (GestaoAmbiental) obj;
            String sql ="";
            PreparedStatement pstm;
            conexao.getConexao().createStatement();
           
            sql = "SELECT * from tb_propriedades_gestao_ambiental where id_propriedade = ?";
            pstm = conexao.getConexao().prepareStatement(sql);
            pstm.setInt(1 , gestao.getId());
            
            
            
            ResultSet rs = pstm.executeQuery();
            ArrayList<Entidade> lista = new ArrayList<Entidade>();
            while (rs.next()) {     
            	GestaoAmbiental gestaoAmbiental = new GestaoAmbiental();
            	
            	gestaoAmbiental.setId(rs.getInt("id_propriedade"));  
            	gestaoAmbiental.setConheceObrigAmbientais(rs.getBoolean("conhece_obrig_ambientais_flg"));
            	gestaoAmbiental.setParticipaColegiadoAmb(rs.getBoolean("participa_colegiado_amb_flg"));
            	gestaoAmbiental.setPorcUtilizAreaUtil(rs.getDouble("porc_utiliz_area_util"));
            	gestaoAmbiental.setPossuiDemarcacaoAPPs(rs.getBoolean("possui_demarcacao_apps_flg"));
                gestaoAmbiental.setPossuiDocConformidadeAmb(rs.getBoolean("possui_doc_conformidade_amb_flg"));
                gestaoAmbiental.setTipoErosao(rs.getString("tipo_erosao"));
              
            	
            	
            	lista.add(gestaoAmbiental);
                
                
            }  
            conexao.getConexao().close();
            pstm.close();
            return lista;
        } catch (SQLException ex) {
            Logger.getLogger(DAOGestaoAmbiental.class.getName()).log(Level.SEVERE, null, ex);
            return null;
        }
	}

}
